{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Principal Component Analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implementation of Principal Component Analysis for dimensionality reduction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.feature_extraction import PrincipalComponentAnalysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The sheer size of data in the modern age is not only a challenge for computer hardware but also a main bottleneck for the performance of many machine learning algorithms. The main goal of a PCA analysis is to identify patterns in data; PCA aims to detect the correlation between variables. If a strong correlation between variables exists, the attempt to reduce the dimensionality only makes sense. In a nutshell, this is what PCA is all about: Finding the directions of maximum variance in high-dimensional data and project it onto a smaller dimensional subspace while retaining most of the information."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PCA and Dimensionality Reduction\n",
    "\n",
    "Often, the desired goal is to reduce the dimensions of a $d$-dimensional dataset by projecting it onto a $(k)$-dimensional subspace (where $k\\;<\\;d$) in order to increase the computational efficiency while retaining most of the information. An important question is \"what is the size of $k$ that represents the data 'well'?\"\n",
    "\n",
    "Later, we will compute eigenvectors (the principal components) of a dataset and collect them in a projection matrix. Each of those eigenvectors is associated with an eigenvalue which can be interpreted as the \"length\" or \"magnitude\" of the corresponding eigenvector. If some eigenvalues have a significantly larger magnitude than others that the reduction of the dataset via PCA onto a smaller dimensional subspace by dropping the \"less informative\" eigenpairs is reasonable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A Summary of the PCA Approach\n",
    "\n",
    "-  Standardize the data.\n",
    "-  Obtain the Eigenvectors and Eigenvalues from the covariance matrix or correlation matrix, or perform Singular Vector Decomposition.\n",
    "-  Sort eigenvalues in descending order and choose the $k$ eigenvectors that correspond to the $k$ largest eigenvalues where $k$ is the number of dimensions of the new feature subspace ($k \\le d$).\n",
    "-  Construct the projection matrix $\\mathbf{W}$ from the selected $k$ eigenvectors.\n",
    "-  Transform the original dataset $\\mathbf{X}$ via $\\mathbf{W}$ to obtain a $k$-dimensional feature subspace $\\mathbf{Y}$.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n",
    "\n",
    "- Pearson, Karl. \"LIII. [On lines and planes of closest fit to systems of points in space.](http://www.tandfonline.com/doi/abs/10.1080/14786440109462720?journalCode=tphm17)\" The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science 2.11 (1901): 559-572."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - PCA on Iris"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.preprocessing import standardize\n",
    "from mlxtend.feature_extraction import PrincipalComponentAnalysis\n",
    "\n",
    "X, y = iris_data()\n",
    "X = standardize(X)\n",
    "\n",
    "pca = PrincipalComponentAnalysis(n_components=2)\n",
    "pca.fit(X)\n",
    "X_pca = pca.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAGJCAYAAACTntdaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt80/W9P/BXmgJymZACw8m4KDR45eatCG2xBNMGp4K3\ntbS4qePgEcrgiHfn1G244UMQOduciOfMYIaec1B/I00gOGgRGRensA34tuVShre1oSiXcUk/vz++\nSZq0SZpv8k3yTfJ6Ph48At9v8s2nH3J59/N5f94fnRBCgIiIiIiikpPqBhARERGlEwZPRERERAow\neCIiIiJSgMETERERkQIMnoiIiIgUYPBEREREpACDJyIiIiIFGDwRERERKcDgiYiIiEiBtAiempqa\ncP/992PcuHEoKSnB66+/nuomERERUZbKTXUDuiKEwOzZszFmzBi89957OHToEBYuXIiLLroI06ZN\nS3XziIiIKMtofuSpubkZV1xxBZ555hkMHToURUVFmDBhAnbt2pXqphEREVEW0nzwNHDgQLz00kvo\n1asXAGDXrl3YsWMHbrjhhhS3jIiIiLKR5qftApWUlODzzz/H5MmTcfPNN6e6OURERJSFdEIIkepG\nROtvf/sbmpub8cwzz8BkMuGpp54KOn/+/HkcP34cPXr0QE6O5gfViIiIKEXa2tpw5swZ9O3bF7m5\nysaS0ip48nE6nVi0aBE+/vjjoB+4paUFhw4dSl3DiIiIKK0MHz4c/fv3V/QYzU/btbS04C9/+QtM\nJpP/2MiRI3Hu3DmcOHEC/fr18x/v0aMHALkjevbsmfS2asmRI0cwZMiQVDcj5dgP7AMf9oOM/cA+\n8Mn2fjh9+jQOHTrkjx2U0Hzw9I9//APz5s3D5s2b8e1vfxsAsGfPHuTl5QUFTgD8U3U9e/b0J5hn\nK71en/V9ALAfAPaBD/tBxn5gH/iwH2SxpPloPjHo6quvxlVXXYUnnngCjY2N2Lx5M1588UU8+OCD\nqW4aERERZSHNjzzl5OTg17/+NZ5//nl8//vfR8+ePTFr1ixUVlamumlERESUhTQfPAFyrafly5en\nuhlERERE2p+2IyIiItISBk9ERERECjB4IiIiIlKAwRMRERGRAgyeiIiIiBRg8ERERESkQFqUKiAi\nikSSJDQ2NmLkyJHIz89PdXOIKMNx5ImI0pbb7ca00lKMGjUKFosFRqMR00pLcezYsVQ3jYgyGIMn\n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\n+D+ybhd1CVMaQgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10da795f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "with plt.style.context('seaborn-whitegrid'):\n",
    "    plt.figure(figsize=(6, 4))\n",
    "    for lab, col in zip((0, 1, 2),\n",
    "                        ('blue', 'red', 'green')):\n",
    "        plt.scatter(X_pca[y==lab, 0],\n",
    "                    X_pca[y==lab, 1],\n",
    "                    label=lab,\n",
    "                    c=col)\n",
    "    plt.xlabel('Principal Component 1')\n",
    "    plt.ylabel('Principal Component 2')\n",
    "    plt.legend(loc='lower center')\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Plotting the Variance Explained Ratio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.preprocessing import standardize\n",
    "\n",
    "X, y = iris_data()\n",
    "X = standardize(X)\n",
    "\n",
    "pca = PrincipalComponentAnalysis(n_components=None)\n",
    "pca.fit(X)\n",
    "X_pca = pca.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "tot = sum(pca.e_vals_)\n",
    "var_exp = [(i / tot)*100 for i in sorted(pca.e_vals_, reverse=True)]\n",
    "cum_var_exp = np.cumsum(var_exp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nPWw3d+5cDBs2DGfOnEH79u0BAFevXoVcLseGDRvUXiARERGRNhEdnlq1aoWDBw9i3759SEtLg4GB\nAbp16wZPT0+YmJhUR41EREREWuO1liowNzfHiBEj1F0LERERkdZTKTz17dsXu3fvhrm5Odzd3SGR\nSF6477Fjx9RWHBEREZG2USk8yWQyYUhu0qRJ1VoQERERkTZTKTwNGjRI+PPt27cxduxYGBkZKe3z\n5MkThISEqLc6IiIiIi2jUnhKS0vD/fv3ATxbYVwqlVZ6nt3169fx008/wd/fX/1VEhEREWkJlcJT\nVlYWRo0aJbyu6hl2RkZGGDlypNoKIyIiItJGKoWnd999F//5z38AAO7u7ti9e3eNebAsERERkRii\nVxiPjY19YXDKysr6xwURERERaTPR6zylpaVh5cqVSElJQWlpKQBAoVBALpcjNzcX165dU3uRRERE\nRNpCdM/TV199hdzcXIwdOxY5OTkYM2YMPvjgAzx58gQBAQHVUSMRERGR1hDd85SUlIQdO3bAzs4O\ne/fuRcuWLTFs2DC0aNECu3fvVlrWgIiIiKimEd3zpKenB1NTUwBAy5YtkZycDADo2rUr/vvf/6q3\nOiIiIiItIzo8OTs744cffkBRURE6dOiA2NhYKBQK/PnnnzAwMKiOGomIiIi0huhhu7lz5+LLL7+E\njY0NPv30U2zZsgWurq4oKCjAxIkTq6NGIiIiIq0hOjzp6+vjyJEjKCoqgpGREfbs2YPz58/DzMwM\nTk5O1VEjERERkdYQPWw3dOhQXL16VXi2nbGxMXr37s3gRERERLWC6PDUoEED4Tl3RERERLWN6GG7\ndu3aYeLEibC3t0fTpk2hr6+vtD0wMFBtxRERERFpG9HhCQC8vLzUXQcRERHRW0F0eGLPEhEREdVm\nouc8EREREdVmDE9EREREIjA8EREREYnA8EREREQkwmuFp99++w2DBw9Gp06dkJGRgYCAAKxbt07d\ntRERERFpHdHhafv27Vi+fDkGDx6M4uJiAECHDh3www8/ICQkRO0FEhEREWkT0eEpKioKS5cuxeef\nfw4dnWdv9/b2xvLly7Fr1y61F0hERESkTUSHpzt37qBVq1aV2m1sbPDw4UO1FFWRXC7H4sWL4erq\niu7du2P16tXCtlu3bmH06NFwdnbGwIEDcfr0abV/PhEREVFFosOTo6Mj9u7dq9SmUCgQGRkJBwcH\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1046cae10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with plt.style.context('seaborn-whitegrid'):\n",
    "    fig, ax = plt.subplots(figsize=(6, 4))\n",
    "    plt.bar(range(4), var_exp, alpha=0.5, align='center',\n",
    "            label='individual explained variance')\n",
    "    plt.step(range(4), cum_var_exp, where='mid',\n",
    "             label='cumulative explained variance')\n",
    "    plt.ylabel('Explained variance ratio')\n",
    "    plt.xlabel('Principal components')\n",
    "    plt.xticks(range(4))\n",
    "    ax.set_xticklabels(np.arange(1, X.shape[1] + 1))\n",
    "    plt.legend(loc='best')\n",
    "    plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - PCA via SVD"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "While the eigendecomposition of the covariance or correlation matrix may be more intuitiuve, most PCA implementations perform a Singular Vector Decomposition (SVD) to improve the computational efficiency. Another advantage of using SVD is that the results tend to be more numerically stable, since we can decompose the input matrix directly without the additional covariance-matrix step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.preprocessing import standardize\n",
    "from mlxtend.feature_extraction import PrincipalComponentAnalysis\n",
    "\n",
    "X, y = iris_data()\n",
    "X = standardize(X)\n",
    "\n",
    "pca = PrincipalComponentAnalysis(n_components=2,\n",
    "                                 solver='svd')\n",
    "pca.fit(X)\n",
    "X_pca = pca.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nTS0WCyEhIQwbNqzQ/nuz3X/uveeLiONozpOI2DztnXa1a9e2zW8q8Le//c3Wo3SvGzduFHp21JEj\nR6hfvz4AqampTJgwgcjISDp37sytW7eApysIunXrxvbt2x+4e+zSpUssX76cUqVK4ebmhqenJ4cO\nHbLtz83N5dixY9StW/epPuv97v/cR48exdfXl1q1auHi4lLova5fv86ZM2dsvUePa986depw5swZ\nvL29bX+2bdvGhg0bnimniLw4Kp5ExOZpezG6devGTz/9RFxcHGfOnGH16tXs3LmTVq1aPfSaEyZM\n4Ntvv2XLli2kpKTQt29fIH/obefOnZw9e5YDBw7w97//HZPJVGiY7FGCg4Np0aIFAwcOZPPmzZw7\nd45du3YxePBg6tWrR/fu3YH84cRPPvmEnTt3kpWVRXR0NGazmeDgYDta5ldnz55l1qxZfPfddyQk\nJJCRkUHPnj1xdXWlV69eTJ48mX379pGZmcmYMWPw8vKytcvj2jcsLIyjR48yd+5czpw5w4YNG5gz\nZ84Th1YLuLq6cv78eS5duvRMn0tEnp6G7USKoafpQXrYMfdue9w1KlSowMKFC5k2bRrLli3D29ub\njz76CF9fX44fP/7ANd98803CwsIoX748o0ePthUusbGxTJw4ka5du1K9enV69epFqVKlyMjIoE2b\nNk/8HP/4xz9YuHAhc+fO5YcffsDDw4OgoCCGDx9uG5IMDw/n1q1bTJgwgVu3btG0aVOWLVtmm1h9\n/3s86T2bNGnC9evXCQ0NpU6dOixatMhW4HzwwQfMmjWLiIgI7t69S+vWrVmyZIltuO1x1/by8iIh\nIYG4uDgWL15M9erViYqKKjTB/373Xi8kJIThw4cTGhrK3r17H/sZnvdZXiLOzmTVgLmIvCD79u1j\nwIABDxRURVV8fDz79u1j6dKlRkcREQNp2E5ERETEDiqeREREROygYTsRERERO6jnSURERMQOKp5E\nRERE7KDiSURERMQOKp5ERERE7KDiSURERMQOKp5ERERE7KDiSURERMQOKp5ERERE7PB/PUqgRXhj\n2gYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10db3f4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "with plt.style.context('seaborn-whitegrid'):\n",
    "    plt.figure(figsize=(6, 4))\n",
    "    for lab, col in zip((0, 1, 2),\n",
    "                        ('blue', 'red', 'green')):\n",
    "        plt.scatter(X_pca[y==lab, 0],\n",
    "                    X_pca[y==lab, 1],\n",
    "                    label=lab,\n",
    "                    c=col)\n",
    "    plt.xlabel('Principal Component 1')\n",
    "    plt.ylabel('Principal Component 2')\n",
    "    plt.legend(loc='lower center')\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we compare this PCA projection to the previous plot in example 1, we notice that they are mirror images of each other. Note that this is not due to an error in any of those two implementations, but the reason for this difference is that, depending on the eigensolver, eigenvectors can have either negative or positive signs.\n",
    "\n",
    "For instance, if $v$ is an eigenvector of a matrix $\\Sigma$, we have\n",
    "\n",
    "$$\\Sigma v = \\lambda v,$$\n",
    "\n",
    "where $\\lambda$ is our eigenvalue\n",
    "\n",
    "then $-v$ is also an eigenvector that has the same eigenvalue, since\n",
    "\n",
    "$$\\Sigma(-v) = -\\Sigma v = -\\lambda v = \\lambda(-v).$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## PrincipalComponentAnalysis\n",
      "\n",
      "*PrincipalComponentAnalysis(n_components=None, solver='eigen')*\n",
      "\n",
      "Principal Component Analysis Class\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `n_components` : int (default: None)\n",
      "\n",
      "    The number of principal components for transformation.\n",
      "    Keeps the original dimensions of the dataset if `None`.\n",
      "\n",
      "- `solver` : str (default: 'eigen')\n",
      "\n",
      "    Method for performing the matrix decomposition.\n",
      "    {'eigen', 'svd'}\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : array-like, shape=[n_features, n_components]\n",
      "\n",
      "    Projection matrix\n",
      "\n",
      "- `e_vals_` : array-like, shape=[n_features]\n",
      "\n",
      "    Eigenvalues in sorted order.\n",
      "\n",
      "- `e_vecs_` : array-like, shape=[n_features]\n",
      "\n",
      "    Eigenvectors in sorted order.\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*transform(X)*\n",
      "\n",
      "Apply the linear transformation on X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `X_projected` : np.ndarray, shape = [n_samples, n_components]\n",
      "\n",
      "    Projected training vectors.\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.feature_extraction/PrincipalComponentAnalysis.md', 'r') as f:\n",
    "    s = f.read()\n",
    "print(s)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
